/* 
	日期：2020-03-31
	备注：现在仅支持图片上传 暂时不支持文件类型的 后续正在完善
	wml
 */
layui.config({}).extend({}).define(["layer", "upload"], function(exports) {
	var $ = layui.$,
		admin = layui.admin,
		upload = layui.upload,
		form = layui.form;
	var option = {
		elem: '',    	//选图按钮
		filebox: '',	//显示文件box
		url: '',		//上传url
		multiple: true,	//是否多图
		accept: '',		//文件类型
		auto: '',		//选择文件后不自动上传
		bindAction: '',		//指向一个按钮触发上传
		initupload: function(initconfig,step){
			option.elem = initconfig.btnelem
			option.filebox = initconfig.filebox
			option.url = initconfig.url ? initconfig.url : server.upimg
			option.multiple = initconfig.multiple ? initconfig.multiple : false
			option.auto = initconfig.auto ? initconfig.auto : false
			option.bindAction = initconfig.bindAction
			option.accept = initconfig.accept
			
			switch(step){
			     case 1:	//初始化上传方法
					option.uploadnew(initconfig)
					option.preupimg()
			       break;
			     case 2:	//回显文件
			       option.filedata = initconfig.filedata
			       option.inituploaddata()
			     break;
			     case 3:   //获取上传的文件
			       return option.getuploaddata(initconfig.filebox)
			     break;
			     default:
					option.uploadnew()
			       break;
			   }
		},
		uploadnew: function(initconfig) {
			var uploadInst = upload.render({
				elem: initconfig.btnelem,
				url: initconfig.url,
				multiple: initconfig.multiple,
				accept: initconfig.accept,
				choose: function(obj) {
					var files = obj.pushFile();
					obj.preview(function(index, file, result) {
						//对上传失败的单个文件重新上传，一般在某个事件中使用
						$(initconfig.filebox).on('click', '.fail', function() {
							obj.upload(index, file);
							delete files[index]
							$(this).parent().remove();
						})
					});
				},
				before: function(obj) {
					//预读本地文件示例，不支持ie8
					obj.preview(function(index, file, result) {
						var html = '<li id="' + index + '"><img class="layui-upload-img" src="' + result + '" alt="' + file.name +
							'">' +
							'<i onclick="removeupimg(this)" class="close_icon layui-icon layui-icon-close-fill"></i> ' +
							'<p class="normal"><i class="layui-icon layui-icon-upload-circle"></i> <span class="tips">上传中...</span></p>' +
							'<p class="success layui-hide"><i class="layui-icon layui-icon-ok-circle"></i> <span class="tips">成功</span></p>' +
							'<p class="fail layui-hide"><i class="layui-icon layui-icon-refresh"></i> <span class="tips">重新上传</span></p>' +
							'</li>'
						// <li><i class="close_icon layui-icon layui-icon-close-fill"></i> <i class="layui-icon layui-icon-refresh"></i></li>
						$(initconfig.filebox).append(html)
					});
				},
				done: function(res, index, upload) {
					//上传完毕
					if (res.code == 0) {
						// console.log($(index));
						if (res.file) {
							$('#' + index).find('img').attr('src', res.file);
							$('#' + index).find('.success').removeClass('layui-hide');
							$('#' + index).find('.normal').addClass('layui-hide');
							$('#' + index).find('.fail').addClass('layui-hide');
						} else {
							$('#' + index).find('.fail').removeClass('layui-hide');
							$('#' + index).find('.success').addClass('layui-hide');
							$('#' + index).find('.normal').addClass('layui-hide');
						}
					} else {
						$('#' + index).find('.fail').removeClass('layui-hide');
						$('#' + index).find('.success').addClass('layui-hide');
						$('#' + index).find('.normal').addClass('layui-hide');
					}
				},
				error: function(index, upload) {
					$('#' + index).find('.fail').removeClass('layui-hide');
					$('#' + index).find('.success').addClass('layui-hide');
					$('#' + index).find('.normal').addClass('layui-hide');
				},
			});
		},
		getuploaddata(dom) {
			var upimg = $(dom + '>li')
			var file_arr = []
			for (var i = 0; i < upimg.length; i++) {
				file_arr.push($(upimg[i]).find('img').attr('src'))
			}
			return file_arr
		},
		inituploaddata() {
			var html = '', dataarr = '';
			if(option.filedata){
				dataarr = option.filedata instanceof Array ? option.filedata : option.filedata.split(',')
				for (var i = 0; i < dataarr.length; i++) {
					html += '<li id="file' + i + '"><img class="layui-upload-img" src="' + dataarr[i] + '" alt="' + dataarr[i] +
						'">' +
						'<i onclick="removeupimg(this)" class="close_icon layui-icon layui-icon-close-fill"></i> ' +
						/* '<p class="normal layui-hide"><i class="layui-icon layui-icon-upload-circle"></i> <span class="tips">上传中...</span></p>' +
						'<p class="success"><i class="layui-icon layui-icon-ok-circle"></i> <span class="tips">成功</span></p>' +
						'<p class="fail layui-hide"><i class="layui-icon layui-icon-refresh"></i> <span class="tips">重新上传</span></p>' + */
						'</li>'
				}
				// <li><i class="close_icon layui-icon layui-icon-close-fill"></i> <i class="layui-icon layui-icon-refresh"></i></li>
				$(option.filebox).append(html)
			}
		},
		preupimg(){
			$(option.filebox).on('click', '.layui-upload-img', function() {
				var w = $(window).width() - 42, h = $(window).height() - 42;
				layer.open({
					title: false, //不显示标题
					shadeClose: true, //开启遮罩关闭
					type: 1,
					// area: [w, h], //宽高
					area: ['50%', '70%'], //宽高
					content: '<div style="width:100%"><img style="width:100%" src='+ $(this).attr('src') +' id="img_prev"/></div>'
				});
			})
		}
	}
	
	window.removeupimg = function(self) {
		layer.confirm('确定要删除上传文件？', {}, function(index, layero) {
			$(self).parent().remove();
			layer.msg('删除成功')
			layer.close(index);
		}, function(index) {
			layer.msg('取消操作')
			layer.close(index);
		});
	}
	
	exports("uploadnew", option);
});
